﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.Common;
using Microsoft.Practices.EnterpriseLibrary.Data.Sql;
using Microsoft.Practices.EnterpriseLibrary.Common;
using System.Configuration;
using Insifo.BE;
using Insifo.BE.Gen;

namespace Insifo.DL.Gen
{
    public class DLImportacion : DLTransaction, IDLTransaccion<BEImportacion>
    {
        #region  Members

        /// <summary>
        /// Método obtiene obtiene la Lista de las importaciones
        /// </summary>
        /// <returns>Devuelve un DataSet</returns>
        public DataSet Listar(BEImportacion pbe)
        {
            DataSet ds = new DataSet();
            SqlDatabase sqlDB = new SqlDatabase(CadenaConexion.Obtener());
            DbCommand dbCmd = sqlDB.GetStoredProcCommand("uSP_INSIFO_GEN_Importacion_Listar");
            try
            {
                dbCmd.CommandTimeout = CadenaConexion.CommandTimeout;
                sqlDB.AddInParameter(dbCmd, "@as_Campo", DbType.String, pbe.Campo);
                sqlDB.AddInParameter(dbCmd, "@as_Valor", DbType.String, pbe.Valor);
                sqlDB.AddInParameter(dbCmd, "@as_Texto", DbType.String, pbe.Texto);
                sqlDB.AddInParameter(dbCmd, "@as_Fecha", DbType.DateTime, pbe.Fecha);
                sqlDB.AddInParameter(dbCmd, "@as_Estado", DbType.String, pbe.Estado);
                sqlDB.AddInParameter(dbCmd, "@ai_Pagina", DbType.Int32, pbe.Pagina);
                ds = sqlDB.ExecuteDataSet(dbCmd);


            }
            catch (Exception e)
            {
                throw e;
            }
            finally
            {
                dbCmd.Dispose();
            }
            return ds;
        }


        /// <summary>
        /// Método obtiene obtiene la Lista de las importaciones
        /// </summary>
        /// <returns>Devuelve un DataSet</returns>
        public DataSet ListarSel(BEImportacion pbe)
        {
            DataSet ds = new DataSet();
            SqlDatabase sqlDB = new SqlDatabase(CadenaConexion.Obtener());
            DbCommand dbCmd = sqlDB.GetStoredProcCommand("uSP_INSIFO_GEN_Importacion_Listar_Sel");
            try
            {
                dbCmd.CommandTimeout = CadenaConexion.CommandTimeout;
                sqlDB.AddInParameter(dbCmd, "@as_Estado", DbType.String, pbe.Estado);
                ds = sqlDB.ExecuteDataSet(dbCmd);
            }
            catch (Exception e)
            {
                throw e;
            }
            finally
            {
                dbCmd.Dispose();
            }
            return ds;
        }


        /// <summary>
        /// Método obtiene Datos de la Importacion
        /// </summary>
        /// <returns>Devuelve un DataSet</returns>
        /// 
        public BEImportacion Obtener(BEImportacion pbe)
        {
            BEImportacion be = new BEImportacion();
            SqlDatabase sqlDB = new SqlDatabase(CadenaConexion.Obtener());
            DbCommand dbCmd = sqlDB.GetStoredProcCommand("uSP_INSIFO_GEN_Importacion_Obtener");
            try
            {
                dbCmd.CommandTimeout = CadenaConexion.CommandTimeout;
                sqlDB.AddInParameter(dbCmd, "@ai_IdImportacion", DbType.Int32, pbe.IdImportacion);

                using (IDataReader reader = sqlDB.ExecuteReader(dbCmd))
                {
                    while (reader.Read())
                    {
                        be.IdImportacion = DBValue.Get<int>(reader, "IdImportacion");
                        be.IdRegistro = DBValue.Get<int>(reader, "IdRegistro");
                        be.Campo= DBValue.Get<String>(reader, "Campo");
                        be.Valor= DBValue.Get<String>(reader, "Valor");
                        be.Texto = DBValue.Get<String>(reader, "Texto");
                        be.Estado = DBValue.Get<String>(reader, "Estado");
                        be.UsuarioModificacion = DBValue.Get<String>(reader, "UsuarioModificacion");
                        be.FechaModificacion = DBValue.Get<DateTime>(reader, "FechaModificacion");
                        be.UsuarioCreacion = DBValue.Get<String>(reader, "UsuarioCreacion");
                        be.FechaCreacion = DBValue.Get<DateTime>(reader, "FechaCreacion");
                        break;
                    }
                }
            }
            catch (Exception e)
            {
                throw e;
            }

            finally
            {
                dbCmd.Dispose();
            }
            return be;
        }

        /// <summary>
        /// Método Inserta una importacion
        /// </summary>
        /// <returns>Devuelve una entidad</returns>
        public BEImportacion Insertar(BEImportacion pbe)
        {
            BEImportacion be = new BEImportacion();
            SqlDatabase sqlDB = new SqlDatabase(CadenaConexion.Obtener());
            DbCommand dbCmd = sqlDB.GetStoredProcCommand("uSP_INSIFO_GEN_Importacion_Insertar");

            try
            {
                dbCmd.CommandTimeout = CadenaConexion.CommandTimeout;

                sqlDB.AddInParameter(dbCmd, "@ai_IdRegistro", DbType.String, pbe.IdRegistro);
                sqlDB.AddInParameter(dbCmd, "@as_Campo", DbType.String, pbe.Campo);
                sqlDB.AddInParameter(dbCmd, "@as_Valor", DbType.String, pbe.Valor);
                sqlDB.AddInParameter(dbCmd, "@as_Texto", DbType.String, pbe.Texto);
                sqlDB.AddInParameter(dbCmd, "@ad_Fecha", DbType.DateTime, pbe.Fecha);
                sqlDB.AddInParameter(dbCmd, "@as_Estado", DbType.String, pbe.Estado);
                sqlDB.AddInParameter(dbCmd, "@as_Usuario", DbType.String, pbe.UsuarioCreacion);

                using (IDataReader reader = sqlDB.ExecuteReader(dbCmd))
                {
                    while (reader.Read())
                    {
                        be.FechaCreacion = DBValue.Get<DateTime>(reader, "Fecha");
                        //Error
                        be.Error = DBValue.Get<Int32>(reader, "CodigoError");
                        be.Mensaje = DBValue.Get<String>(reader, "MensajeError");

                        break;
                    }
                }
            }
            catch (Exception e)
            {
                throw e;
            }

            finally
            {
                dbCmd.Dispose();
            }
            return be;
        }

        /// <summary>
        /// Método Inserta una importacion
        /// </summary>
        /// <returns>Devuelve una entidad</returns>
        public BEImportacion Importar_Registro(BEImportacion pbe)
        {
            BEImportacion be = new BEImportacion();
            SqlDatabase sqlDB = new SqlDatabase(CadenaConexion.Obtener());
            DbCommand dbCmd = sqlDB.GetStoredProcCommand("uSP_INSIFO_GEN_Importacion_Importar_Registro");

            try
            {
                dbCmd.CommandTimeout = CadenaConexion.CommandTimeout;

                sqlDB.AddInParameter(dbCmd, "@ai_IdRegistro", DbType.Int32, pbe.IdRegistro);
                sqlDB.AddInParameter(dbCmd, "@as_UsuarioCreacion", DbType.String, pbe.UsuarioCreacion);

                using (IDataReader reader = sqlDB.ExecuteReader(dbCmd))
                {
                    while (reader.Read())
                    {
                        be.FechaCreacion = DBValue.Get<DateTime>(reader, "Fecha");
                        //Error
                        be.Error = DBValue.Get<Int32>(reader, "CodigoError");
                        be.Mensaje = DBValue.Get<String>(reader, "MensajeError");

                        break;
                    }
                }
            }
            catch (Exception e)
            {
                throw e;
            }

            finally
            {
                dbCmd.Dispose();
            }
            return be;
        }

        /// <summary>
        /// Método Inserta una importacion
        /// </summary>
        /// <returns>Devuelve una entidad</returns>
        public BEImportacion Importar(BEImportacion pbe)
        {
            BEImportacion be = new BEImportacion();
            SqlDatabase sqlDB = new SqlDatabase(CadenaConexion.Obtener());
            DbCommand dbCmd = sqlDB.GetStoredProcCommand("uSP_INSIFO_GEN_Importacion_Importar");

            try
            {
                dbCmd.CommandTimeout = CadenaConexion.CommandTimeout;
                sqlDB.AddInParameter(dbCmd, "@as_UsuarioCreacion", DbType.String, pbe.UsuarioCreacion);

                using (IDataReader reader = sqlDB.ExecuteReader(dbCmd))
                {
                    while (reader.Read())
                    {
                        be.FechaCreacion = DBValue.Get<DateTime>(reader, "Fecha");
                        //Error
                        be.Error = DBValue.Get<Int32>(reader, "CodigoError");
                        be.Mensaje = DBValue.Get<String>(reader, "MensajeError");

                        break;
                    }
                }
            }
            catch (Exception e)
            {
                throw e;
            }

            finally
            {
                dbCmd.Dispose();
            }
            return be;
        }

        /// <summary>
        /// Método Inserta una importacion
        /// </summary>
        /// <returns>Devuelve una entidad</returns>
        public BEImportacion Mapear()
        {
            BEImportacion be = new BEImportacion();
            SqlDatabase sqlDB = new SqlDatabase(CadenaConexion.Obtener());
            DbCommand dbCmd = sqlDB.GetStoredProcCommand("uSP_INSIFO_GEN_Importacion_Mapear");

            try
            {
                dbCmd.CommandTimeout = CadenaConexion.CommandTimeout;
                using (IDataReader reader = sqlDB.ExecuteReader(dbCmd))
                {
                    while (reader.Read())
                    {
                        be.FechaCreacion = DBValue.Get<DateTime>(reader, "Fecha");
                        //Error
                        be.Error = DBValue.Get<Int32>(reader, "CodigoError");
                        be.Mensaje = DBValue.Get<String>(reader, "MensajeError");

                        break;
                    }
                }
            }
            catch (Exception e)
            {
                throw e;
            }

            finally
            {
                dbCmd.Dispose();
            }
            return be;
        }

        /// <summary>
        /// Método Inserta una importacion
        /// </summary>
        /// <returns>Devuelve una entidad</returns>
        public BEImportacion Mapear_Campo(BEImportacion pbe)
        {
            BEImportacion be = new BEImportacion();
            SqlDatabase sqlDB = new SqlDatabase(CadenaConexion.Obtener());
            DbCommand dbCmd = sqlDB.GetStoredProcCommand("uSP_INSIFO_GEN_Importacion_Mapear_Campo");

            try
            {
                dbCmd.CommandTimeout = CadenaConexion.CommandTimeout;

                sqlDB.AddInParameter(dbCmd, "@as_ParametroDetalle", DbType.String, pbe.ParametroDetalle);
                sqlDB.ExecuteNonQuery(dbCmd);
                //using (IDataReader reader = sqlDB.ExecuteReader(dbCmd))
                //{
                //    while (reader.Read())
                //    {
                //        be.FechaCreacion = DBValue.Get<DateTime>(reader, "Fecha");
                //        //Error
                //        be.Error = DBValue.Get<Int32>(reader, "CodigoError");
                //        be.Mensaje = DBValue.Get<String>(reader, "MensajeError");

                //        break;
                //    }
                //}
            }
            catch (Exception e)
            {
                throw e;
            }

            finally
            {
                dbCmd.Dispose();
            }
            return be;
        }

        /// <summary>
        /// Método Actualiza el Estado de la Importacion
        /// </summary>
        /// <returns>Devuelve una entidad</returns>
        public BEImportacion Eliminar(BEImportacion pbe)
        {
            BEImportacion be = new BEImportacion();
            SqlDatabase sqlDB = new SqlDatabase(CadenaConexion.Obtener());
            DbCommand dbCmd = sqlDB.GetStoredProcCommand("uSP_INSIFO_GEN_Importacion_Eliminar");

            try
            {
                dbCmd.CommandTimeout = CadenaConexion.CommandTimeout;
                sqlDB.AddInParameter(dbCmd, "@ai_IdRegistro", DbType.Int32, pbe.IdRegistro);

                using (IDataReader reader = sqlDB.ExecuteReader(dbCmd))
                {
                    while (reader.Read())
                    {
                        be.IdRegistro = DBValue.Get<Int32>(reader, "IdRegistro");
                        //Error
                        be.Error = DBValue.Get<Int32>(reader, "CodigoError");
                        be.Mensaje = DBValue.Get<String>(reader, "MensajeError");
                        break;
                    }
                }
            }
            catch (Exception e)
            {
                throw e;
            }

            finally
            {
                dbCmd.Dispose();
            }
            return be;
        }

        /// <summary>
        /// Método obtiene obtiene la Lista de las importaciones
        /// </summary>
        /// <returns>Devuelve un DataSet</returns>
        public DataSet ListarTabla(BEImportacion pbe)
        {
            DataSet ds = new DataSet();
            SqlDatabase sqlDB = new SqlDatabase(CadenaConexion.Obtener());
            DbCommand dbCmd = sqlDB.GetStoredProcCommand("uSP_INSIFO_GEN_Importacion_Tabla_Listar");
            try
            {
                dbCmd.CommandTimeout = CadenaConexion.CommandTimeout;
                sqlDB.AddInParameter(dbCmd, "@as_Parametro", DbType.String, pbe.Parametro);
                sqlDB.AddInParameter(dbCmd, "@as_ParametroDetalle", DbType.String, pbe.ParametroDetalle);
                ds = sqlDB.ExecuteDataSet(dbCmd);


            }
            catch (Exception e)
            {
                throw e;
            }
            finally
            {
                dbCmd.Dispose();
            }
            return ds;
        }

        /// <summary>
        /// Método obtiene obtiene la Lista de las importaciones
        /// </summary>
        /// <returns>Devuelve un DataSet</returns>
        public DataSet ListarCampo(BEImportacion pbe)
        {
            DataSet ds = new DataSet();
            SqlDatabase sqlDB = new SqlDatabase(CadenaConexion.Obtener());
            DbCommand dbCmd = sqlDB.GetStoredProcCommand("uSP_INSIFO_GEN_Importacion_Campo_Listar");
            try
            {
                dbCmd.CommandTimeout = CadenaConexion.CommandTimeout;
                sqlDB.AddInParameter(dbCmd, "@as_Parametro", DbType.String, pbe.Parametro);
                sqlDB.AddInParameter(dbCmd, "@as_ParametroDetalle", DbType.String, pbe.ParametroDetalle);
                ds = sqlDB.ExecuteDataSet(dbCmd);


            }
            catch (Exception e)
            {
                throw e;
            }
            finally
            {
                dbCmd.Dispose();
            }
            return ds;
        }

        /// <summary>
        /// Método obtiene obtiene la Lista de las importaciones
        /// </summary>
        /// <returns>Devuelve un DataSet</returns>
        public DataSet ListarMaestro(BEImportacion pbe)
        {
            DataSet ds = new DataSet();
            SqlDatabase sqlDB = new SqlDatabase(CadenaConexion.Obtener());
            DbCommand dbCmd = sqlDB.GetStoredProcCommand("uSP_INSIFO_GEN_Importacion_Maestro_Listar");
            try
            {
                dbCmd.CommandTimeout = CadenaConexion.CommandTimeout;
                sqlDB.AddInParameter(dbCmd, "@as_Parametro", DbType.String, pbe.Parametro);
                sqlDB.AddInParameter(dbCmd, "@as_ParametroDetalle", DbType.String, pbe.ParametroDetalle);
                ds = sqlDB.ExecuteDataSet(dbCmd);


            }
            catch (Exception e)
            {
                throw e;
            }
            finally
            {
                dbCmd.Dispose();
            }
            return ds;
        }

        /// <summary>
        /// Método Inserta Maestro
        /// </summary>
        /// <returns>Devuelve una entidad</returns>
        public BEImportacion InsertarTabla(BEImportacion pbe)
        {
            BEImportacion be = new BEImportacion();
            SqlDatabase sqlDB = new SqlDatabase(CadenaConexion.Obtener());
            DbCommand dbCmd = sqlDB.GetStoredProcCommand("uSP_INSIFO_GEN_Importacion_Insertar_Tabla");

            try
            {
                dbCmd.CommandTimeout = CadenaConexion.CommandTimeout;

                sqlDB.AddInParameter(dbCmd, "@as_Parametro", DbType.String, pbe.Parametro);
                sqlDB.AddInParameter(dbCmd, "@as_ParametroDetalle", DbType.String, pbe.ParametroDetalle);
                sqlDB.AddInParameter(dbCmd, "@as_Descripcion", DbType.String, pbe.Descripcion);
                sqlDB.AddInParameter(dbCmd, "@as_Estado", DbType.String, pbe.Estado);
                sqlDB.AddInParameter(dbCmd, "@as_UsuarioCreacion", DbType.String, pbe.UsuarioCreacion);

                using (IDataReader reader = sqlDB.ExecuteReader(dbCmd))
                {
                    while (reader.Read())
                    {
                        be.FechaCreacion = DBValue.Get<DateTime>(reader, "Fecha");
                        //Error
                        be.Error = DBValue.Get<Int32>(reader, "CodigoError");
                        be.Mensaje = DBValue.Get<String>(reader, "MensajeError");

                        break;
                    }
                }
            }
            catch (Exception e)
            {
                throw e;
            }

            finally
            {
                dbCmd.Dispose();
            }
            return be;
        }

        #endregion  Members
    }
}
